<?php
/**
 * Permite agregar, habilitar e inhabilitar tipos de multas por el mal uso del
 * servicio de estacionamiento
 * @package simertweb 
 * @subpackage controllers  
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Configuracion_multas extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mconfiguracion_multas');
        $this->load->model('mrol');
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('acceso');
    }

    /**
     * Muestra los tipos de multa existentes
     */
    function index() {
        if ($this->acceso->sesion() == 1) {
            $data['costos'] = $this->mconfiguracion_multas->listar_costos();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('configuracion_multas', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permite guardar un nuevo tipo de multa
     */
    function guardar() {
        $this->form_validation->set_rules('l16a30', 'Descripción', 'required|callback_control_check|callback_razon_check|callback_intervalo_check|trim|min_length[5]|max_length[100]');
        $this->form_validation->set_rules('i16a30', 'Costo', 'required|numeric|greater_than[2]|less_than[100]trim');

        if ($this->form_validation->run() === TRUE) {
            $this->mconfiguracion_multas->guardar_costos();
            $this->index();
        } else {
            $this->index();
        }
    }

    /**
     * Permite eliminar un tipo de multa
     */
    function eliminar_multas() {
        if ($this->acceso->sesion() == 1) {
            $this->mconfiguracion_multas->eliminar_precios();
            $this->index();
        } else {
            $this->index();
        }
    }

    /**
     * Permite habilitar o inhabilitar un tipo de multa
     */
    function desabilitar_multas() {
        $this->form_validation->set_rules('habilitado', 'Habilitado', 'required|callback_seleccionar_check');
        if ($this->form_validation->run() === TRUE) {
            $this->mconfiguracion_multas->habilitar_deshabilitar();
            $this->index();
        } else {
            $this->index();
        }
    }
    
    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Válida que el tipo de multa no se duplique
     * @return boolean
     */
    function razon_check() {
        if ($this->mconfiguracion_multas->validar_razon() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('razon_check', '<p style="color: red">La configuración de la multa ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Valida que multa por exceso de tiempo esté correcta
     * @return boolean
     */
    function intervalo_check() {
        if ($this->mconfiguracion_multas->validar_intervalo() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('intervalo_check', '<p style="color: red">El intervalo de tiempo ingresado ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Válida la selección de un tipo de multa
     * @return boolean
     */
    function seleccionar_check() {
        if (isset($_POST["habilitado"])) {
            return TRUE;
        } else {
            $this->form_validation->set_message('seleccionar_check', '<p style="color: red">Primero debe seleccionar un item</p>');
            return FALSE;
        }
    }

    /**
     * Válida el intervalo de tiempo en el caso de que sea por exceso de tiempo
     * @return boolean
     */
    function control_check() {
        if ($this->mconfiguracion_multas->control_valor() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('control_check', '<p style="color: red">Intervalo de tiempo incorrecto</p>');
            return FALSE;
        }
    }


}

?>
